import type { ProjectConfig } from '/#/config';
import { MenuTypeEnum, MenuModeEnum, TriggerEnum, MixSidebarTriggerEnum } from '/@/enums/menuEnum';
import { CacheTypeEnum } from '/@/enums/cacheEnum';
import {
  ContentEnum,
  PermissionModeEnum,
  ThemeEnum,
  RouterTransitionEnum,
  SettingButtonPositionEnum,
  SessionTimeoutProcessingEnum,
} from '/@/enums/appEnum';
import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting';
import { primaryColor } from '../../build/config/themeConfig';

// ! 在更改后，需要清除浏览器缓存
const setting: ProjectConfig = {
  // 是否显示配置按钮
  showSettingButton: true,

  // 是否显示主题切换按钮
  showDarkModeToggle: true,

  // 设置按钮位置 可选项
  // SettingButtonPositionEnum.AUTO: 自动选择
  // SettingButtonPositionEnum.HEADER: 位于头部
  // SettingButtonPositionEnum.FIXED: 固定在右侧
  settingButtonPosition: SettingButtonPositionEnum.AUTO,

  // 权限模式,默认前端角色权限模式
  // ROUTE_MAPPING: 前端模式（菜单由路由生成，默认）
  // ROLE：前端模式（菜单路由分开）
  //permissionMode: PermissionModeEnum.ROUTE_MAPPING,
  /*
     @Description: 使用后端生成动态路由表的时候，权限模式改为 BACK 模式
     @Author: 张泽源
     @Date: 2023-11-15 09点20分
   */
  permissionMode: PermissionModeEnum.BACK,

  // 与权限相关的缓存存储在sessionStorage或localStorage中
  permissionCacheType: CacheTypeEnum.LOCAL,

  // 会话超时处理方案
  // SessionTimeoutProcessingEnum.ROUTE_JUMP: 路由跳转到登录页
  // SessionTimeoutProcessingEnum.PAGE_COVERAGE: 生成登录弹窗，覆盖当前页面
  sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP,

  // 颜色
  themeColor: primaryColor,

  // 网站灰色模式，可用于潜在的哀悼日期
  grayMode: false,

  // 色盲模式
  colorWeak: false,

  // 是否取消菜单、顶部、多标签页显示，用于嵌入到其他系统中
  fullContent: false,

  // 内容模式
  contentMode: ContentEnum.FULL,

  // 是否显示Logo
  showLogo: true,

  // 是否显示页脚
  showFooter: false,

  // 头部配置
  headerSetting: {
    // 头部背景颜色
    bgColor: HEADER_PRESET_BG_COLOR_LIST[0],
    // 固定在顶部
    fixed: true,
    // 是否显示顶部
    show: true,
    // 主题
    theme: ThemeEnum.LIGHT,
    // 是否启用锁定屏幕功能
    useLockPage: true,
    // 是否显示全屏按钮
    showFullScreen: true,
    // 是否显示文档按钮
    showDoc: true,
    // 是否显示通知按钮
    showNotice: true,
    // 是否显示菜单搜索
    showSearch: true,
  },

  // 菜单配置
  menuSetting: {
    // 侧边栏菜单背景颜色
    bgColor: SIDE_BAR_BG_COLOR_LIST[0],
    // 是否固定左侧菜单
    fixed: true,
    // 菜单折叠
    collapsed: false,
    // 折叠菜单时是否显示菜单名称
    collapsedShowTitle: false,
    // 是否可拖拽
    // 仅限于左侧菜单的展开，鼠标在菜单右侧有一个拖动条
    canDrag: false,
    // 是否显示
    show: true,
    // 是否隐藏
    hidden: false,
    // 菜单宽度
    menuWidth: 210,
    // 菜单模式
    mode: MenuModeEnum.INLINE,
    // 菜单类型
    type: MenuTypeEnum.SIDEBAR,
    // 菜单主题
    theme: ThemeEnum.DARK,
    // 分割菜单
    split: false,
    // 顶部菜单布局
    topMenuAlign: 'center',
    // 折叠触发位置
    trigger: TriggerEnum.HEADER,
    // 打开手风琴模式，只显示一个菜单
    accordion: true,
    // 切换页面时关闭菜单
    closeMixSidebarOnChange: false,
    // 模块打开方式 ‘click’ | 'hover'
    mixSideTrigger: MixSidebarTriggerEnum.CLICK,
    // 固定展开菜单
    mixSideFixed: false,
  },

  // 多标签
  multiTabsSetting: {
    cache: false,
    // 打开
    show: true,
    // 是否可以拖拽排序标签
    canDrag: true,
    // 打开快速操作
    showQuick: true,
    // 是否显示刷新按钮
    showRedo: true,
    // 是否显示折叠按钮
    showFold: true,
  },

  // 过渡设置
  transitionSetting: {
    // 是否打开页面切换动画
    // 禁用状态还会禁用页面加载
    enable: true,

    // 路由基本切换动画
    basicTransition: RouterTransitionEnum.FADE_SIDE,

    // 是否打开页面切换加载
    // 仅在enable=true时打开
    openPageLoading: true,

    // 是否打开顶部进度条
    openNProgress: false,
  },

  // 是否启用KeepAlive缓存，在开发过程中最好关闭，否则需要每次清除缓存
  openKeepAlive: true,

  // 自动锁定屏幕时间，0不锁定屏幕。单位分钟，默认0
  lockTime: 0,

  // 是否显示面包屑导航
  showBreadCrumb: true,

  // 是否显示面包屑导航图标
  showBreadCrumbIcon: false,

  // 使用错误处理插件
  useErrorHandle: false,

  // 是否打开返回顶部按钮
  useOpenBackTop: true,

  // 是否可以嵌入iframe页面
  canEmbedIFramePage: true,

  // 切换界面时是否删除未关闭的消息和通知
  closeMessageOnSwitch: true,

  // 切换界面时是否取消已发送但未响应的http请求。
  // 如果启用，可以在单独的接口中设置覆盖
  removeAllHttpPending: false,
};

export default setting;
